<?php
/**
 * PHP中的接口
 */

/**
 * 定义一个接口,实现缓存的写入
 */
interface Cache {
    function write();
}

/**
 * 服务端实现上面的接口, 此时服务端也不知道将会被谁调用
 */
class FileCache implements Cache {
    public function write() {
        echo '缓存写入文件中' . PHP_EOL;
    }
}

class RedisCache implements Cache {
    public function write() {
        echo '缓存写入Redis中' . PHP_EOL;
    }
}

/**
 * 客户端面向上面的接口, 此时客户端看不到上面两个类的内部细节, 只知道这两个类实现了Cache接口
 */
$client = new FileCache();
$client->write(); //缓存写入文件中


$client = new RedisCache();
$client->write(); //缓存写入Redis中